// backend/middleware/auth.js
const jwt = require('jsonwebtoken');

// (重要) 这个密钥必须和 P2 在 index.js 中定义的 JWT_SECRET 完全一致
const JWT_SECRET = 'your_jwt_secret_key'; 

// 导出中间件函数
module.exports = (req, res, next) => {
  try {
    // 1. 从请求头获取 token
    // 请求头格式: Authorization: Bearer <token>
    const token = req.headers.authorization.split(' ')[1];
    if (!token) {
      return res.status(401).json({ success: false, message: '认证失败：缺少Token' });
    }

    // 2. 验证 token
    const decodedToken = jwt.verify(token, JWT_SECRET);

    // 3. (重要) 将解码后的用户信息(特别是用户ID)附加到 req 对象中
    // 这样, 后续的 API 处理器就能通过 req.user 知道是哪个用户在操作
    req.user = { 
        id: decodedToken.id, 
        username: decodedToken.username 
    };

    // 4. 放行, 继续执行后续的 API 路由
    next();

  } catch (error) {
    // Token 验证失败 (无效或过期)
    res.status(401).json({ success: false, message: '认证失败：Token无效' });
  }
};